import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.graphics.tsaplots import plot_acf,plot_pacf

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

data=pd.read_csv('五粮液股票数据.csv',encoding='gbk')
print(data.head())

# 数据格式处理
#1.设置交易日期为索引
di=pd.to_datetime(data['交易日期'].values,format='%Y%m%d')
data=data.set_index(di)
print(data)
# 2.重采样：周
data_w=data['收盘价'].resample('W-MON').mean()
print(data_w.head())
#画图
#1.每日收盘价
plt.plot(data['收盘价'])
plt.ylabel('收盘价(元)')
plt.title('2003-2018每日收盘价')
plt.show()
# 2.每周收盘价均值
plt.plot(data_w["2014":"2017"])
plt.ylabel('收盘价(元)')
plt.title('2014-2017每周收盘价均值')
plt.show()
# 3.波动性:PACF
plot_acf(data_w["2014":"2017"])
plt.title('2014-2017指数ACF')
plt.show()
# 3.波动性:PACF
plot_pacf(data_w["2014":"2017"])
plt.title('2014-2017指数PACF')
plt.show()
#拟合&预测
model=ARIMA(data_w["2014":"2017"],order=(1,1,1),freq='W-MON')
arima_result=model.fit()
pred=arima_result.predict("2018-01-01","2018-02-26",dynamic=True,typ='levels')
forcast=pd.concat([data_w,pred],axis=1,keys=['真','预测'])
plt.plot(forcast)
plt.title("真实值vs预测值")
plt.show()